#include <iostream>

using namespace std;


void ff(int*) { }

void ff(unsigned int) { }

void useFuncPtr
    (
    void (*pFunc)(int*)
    )
    { }

int main(void)
{
    // 1. declare function pointer
    void (*pf1)(int*);

    // 2. assign a function to the pointer
    pf1 = ff;

    // 3. use the pointer as a normal function
    pf1(nullptr);

    // 4. pass the pointer as param
    useFuncPtr(ff);
    useFuncPtr(pf1);

    return 0;
}
